import { setToken, getToken, removeToken } from '@/utils/storage'
// 定义用户模块的store
const state = {
  // 默认存储token信息 vuex中的数据虽然是响应式的,但是,页面刷新会丢失状态--使用本地存储来处理
  // 存储token  = 本地存储(数据持久化)+vuex(数据响应式)
  // tokenInfo: {}
  // 本地存储取出来的数据是字符串格式 需要转换成对象方式JSON.parse()
  // tokenInfo: JSON.parse(localStorage.getItem('tokenInfo')) || {}
  tokenInfo: getToken()
}
const mutations = {
  // 定义mutation,修改state中的数据
  setTokenInfo (state, obj) {
    state.tokenInfo = obj
    // console.log(obj)
    // 本地存储 数据格式只能是字符串格式, JSON.stringify(数据) 将对象格式处理成json字符串形式的
    // localStorage.setItem('tokenInfo', JSON.stringify(obj))
    setToken(obj)
  },
  // 移除tokenInfo
  removeTokenInfo (state) {
    // 清除了vuex中的数据
    state.tokenInfo = {}
    removeToken()
  }
}
const actions = {}
const getters = {}
export default {
  state,
  mutations,
  actions,
  getters,
  // 开启命名空间
  namespaced: true
}

// token 存储两个地方 1. vuex 登录成功后 提交了一个mutation 这个mutation中设置了token的存储在vuex中
//                   2. 本地 cookie localStorage(移动端会存在localStorage中)
// vuex保证数据的响应式  本地存储保证数据持久化
